<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        //预解析案例
        var num=10;
        fun();
        function fun(){
            console.log(num);
            var num=20;
        }
        
        //第二个案例
        f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1(){
            var a=b=c=9;
            console.log(a);
            console.log(b);
            console.log(c);
        }
        
        

        //1
        // console.log(num);

        //2
        console.log(num);  //undefined
        var num=10;
        
        //3
        fn();  //可以调用
        function fn(){
            console.log(11);
        }

        //4 
        fun();  //undefined
        var fun = function(){
            console.log(22);
        }
        
        //js引擎运行js分为两步：预解析，代码执行
        //预解析会把js里面所有的var和function放到当前作用域的最前面
        //1、变量提升
        //把所有的变量声明提升到当前作用域的最前面，但不赋值
        //2、函数提升
        //把所有的函数声明提升到当前作用域的最前面
    </script>
</head>
<body>
    
</body>
</html>